Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
11.05.2024
Размер:
330.93 Кб
Скачать

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

“ОМСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ”

Кафедра “Информатика и вычислительная техника

ОТЧЕТ

по лабораторной работе №14

ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ. СПИСКИ

Выполнил:

Студент группы ИВТ-234 Бектимиров А.Е.

_____________________________________________________

(дата, подпись)

Проверил:

ст. пр. доцент Дорошенко М.С.

_____________________________________________________

(дата, подпись)

Омск 2024

Лабораторная работа №14

Тема: Динамические структуры данных. Списки

Вариант 2

Задание 1

Условие задачи:

Используя динамическую структуру список, проверить, является ли он упорядоченным набором чисел.

Схема алгоритма:

Текст программы:

#include <iostream>

using namespace std;

struct Node {

int data;

Node* next;

};

void insert(Node*& head, int num) {

Node* newNode = new Node;

newNode->data = num;

newNode->next = nullptr;

if (head == nullptr) {

head = newNode;

}

else {

Node* temp = head;

while (temp->next != nullptr) {

temp = temp->next;

}

temp->next = newNode;

}

}

bool isSorted(Node* head) {

Node* temp = head;

while (temp->next != nullptr) {

if (temp->data > temp->next->data) {

return false;

}

temp = temp->next;

}

return true;

}

int main() {

setlocale(LC_ALL, "RUS");

Node* head = nullptr;

int num;

char choice;

do {

cout << "Введите число: ";

cin >> num;

insert(head, num);

cout << "Вы хотите добавить ещё числа в список? (y/n): ";

cin >> choice;

} while (choice == 'y');

if (isSorted(head)) {

cout << "Заданный список является упорядоченным набором чисел." << endl;

}

else {

cout << "Заданный список не является упорядоченным набором чисел." << endl;

}

return 0;

}

Результаты выполнения программы:

Задание 2

Условие задачи:

Реализовать задачу с использованием другой динамической структуры или придумать свою задачу, написать и отладить для нее программу.

Схема алгоритма:

Текст программы:

#include <iostream>

#include <queue>

using namespace std;

bool isOrdered(queue<int>& q) {

bool isAscending = true;

bool isDescending = true;

if (q.empty()) {

return true;

}

int prev = q.front();

q.pop();

while (!q.empty()) {

int curr = q.front();

q.pop();

if (curr < prev) {

isAscending = false;

}

if (curr > prev) {

isDescending = false;

}

prev = curr;

}

return isAscending || isDescending;

}

int main() {

setlocale(LC_ALL, "RUS");

queue<int> numbers;

int num;

cout << "Введите последовательность цифр (-1 - \"стоп\"): ";

while (true) {

cin >> num;

if (num == -1) {

break;

}

numbers.push(num);

}

if (isOrdered(numbers)) {

cout << "Последовательность ввода упорядочена." << endl;

}

else {

cout << "Последовательность ввода не упорядочена." << endl;

}

return 0;

}

Результаты выполнения программы:

Соседние файлы в папке Лабораторные работы